/*
给定一个字符串，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。

示例 1:

输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc" 
注意：在字符串中，每个单词由单个空格分隔，并且字符串中不会有任何额外的空格。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
class Solution {
public:
    string reverseWords(string s) {
        s.push_back(' ');
        int last=0;
        for(int i=0;i<s.size();i++){
            if(s[i]==' '){
                partreverse(s,last,i-1);
                last=i+1;
            }
        }
        s.pop_back();
        return s;
    }
    void partreverse(string& s,int i,int j){
        char tmp;
        while(i<j){
            tmp=s[i];
            s[i]=s[j];
            s[j]=tmp;
            i++;
            j--;
        }
    }
};